package com.rf.richfitwheel.admin.sys.vo;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.rf.richfitwheel.admin.sys.model.OrgVO;
import com.rf.richfitwheel.admin.sys.model.User;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.util.ObjectUtils;

import java.io.Serializable;
import java.util.List;


@JsonIgnoreProperties(ignoreUnknown = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserVO extends User implements Serializable {
    private static final long serialVersionUID = -5641851902602888030L;
    private List<String> stationIds;//用户所有的岗位
    private OrgVO org; //用户所属部门,里面包含部门所属机构
    private List<OrgVO> mngOrgs;//用户管理部门,每个部门里面包含部门所属机构和每个模块对应的数据权限
    private OrgVO defaultOrg;//当前登录默认管理部门,里面包含部门所属机构和每个模块对应的数据权限

    //以下为默认部门和机构的属性
    private String defaultDeptId;//部门id
    private String defaultDeptCode;//部门编码
    private String defaultDeptName;//部门名称
    private String defaultOrgId;//机构id
    private String defaultOrgCode;//机构编码
    private String defaultOrgName;//机构名称

    private String sessionId; // redis中的ID
    /**
     * 用户所有角色
     */
    private List<String> roles;

    // 获取当前部门所属机构的机构编码, 有可能为空
    public String getDefaultParentOrgCode() {
        if (ObjectUtils.isEmpty(this.getDefaultOrg()) || ObjectUtils.isEmpty(this.getDefaultOrg().getParentOrg())) {
            return this.defaultOrgCode;
}
        return this.getDefaultOrg().getParentOrg().getOrgCode().trim();
    }

    // 获取当前部门所属机构的机构名称
    public String getDefaultParentOrgName() {
        if (ObjectUtils.isEmpty(this.getDefaultOrg()) || ObjectUtils.isEmpty(this.getDefaultOrg().getParentOrg())) {
            return this.defaultOrgName;
        }
        return this.getDefaultOrg().getParentOrg().getOrgName().trim();
    }
}
